home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / hydrabbsa8 / source / src.lha / control / controlgui / ControlGUI.c_ < prev    next >
Encoding:
Text File  |  1996-09-08  |  22.0 KB  |  716 lines

  1. /*********************************************/
  2. /*                                           */
  3. /*       Designer (C) Ian OConnor 1994       */
  4. /*                                           */
  5. /*      Designer Produced C include file     */
  6. /*                                           */
  7. /*********************************************/
  8.  
  9. #include <exec/types.h>
  10. #include <exec/memory.h>
  11. #include <dos/dosextens.h>
  12. #include <intuition/screens.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/gadgetclass.h>
  15. #include <libraries/gadtools.h>
  16. #include <diskfont/diskfont.h>
  17. #include <utility/utility.h>
  18. #include <graphics/gfxbase.h>
  19. #include <workbench/workbench.h>
  20. #include <graphics/scale.h>
  21. #include <clib/exec_protos.h>
  22. #include <clib/wb_protos.h>
  23. #include <clib/intuition_protos.h>
  24. #include <clib/gadtools_protos.h>
  25. #include <clib/graphics_protos.h>
  26. #include <clib/utility_protos.h>
  27. #include <string.h>
  28. #include <clib/diskfont_protos.h>
  29.  
  30. #include "ControlGUI.h"
  31.  
  32.  
  33. UWORD HbbsLogo_brushColours[] =  /* Use LoadRGB4 to use this. */
  34.   {
  35.   2730,0,4095,1675,2457,3003,2985,4026
  36.   };
  37.  
  38. UWORD HbbsLogo_brushData[375] =
  39.   {
  40.   0,0,0,0,0,0,0,0,0,0,256,4096,0,0,0,256,4127,49409,64528,8129,256,4112,257,16,
  41.   4097,256,4112,257,16,4127,256,4112,257,16,4096,0,4096,768,48,0,0,4096,512,32,0,
  42.   508,4127,49153,64515,65281,256,4112,257,16,1,256,4112,257,16,1,256,4112,257,16,
  43.   16385,256,4096,256,16,1,256,4096,768,48,3,32513,63487,65151,65507,65534,0,0,0,
  44.   0,0,0,0,0,0,0,0,8704,32768,47488,32768,0,8704,32770,8744,32768,0,658,45218,
  45.   8200,32768,0,14868,42276,8584,32768,0,8804,41252,8232,32768,0,8768,41000,8232,
  46.   32768,0,8835,41192,8648,32768,0,0,0,0,0,65027,61439,64767,65479,65532,65027,
  47.   61439,65279,65519,65534,65027,61408,16126,1007,57406,65027,61408,16126,1007,
  48.   57406,65027,61408,16126,1007,57344,65027,61408,16126,1007,57344,65535,61439,
  49.   64767,65487,65532,65535,61439,64767,65479,65534,65027,61408,16126,992,254,
  50.   65027,61408,16126,992,254,65027,61408,16126,1007,33022,65027,61408,16126,1007,
  51.   33022,65027,61439,65279,65519,65534,65027,61439,64767,65479,65532,0,0,0,0,0,0,
  52.   0,0,0,0,0,17409,1,62353,0,0,17409,4,17497,0,0,17703,29124,17429,0,0,32041,
  53.   19016,17299,0,0,17609,16968,16465,0,0,17545,16976,17489,0,0,17671,16848,17297,
  54.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  55.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  56.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  57.   0,0,0,0,0,0,0,0,0,0,0,0,0,0
  58.   };
  59.  
  60. struct Menu *CtrlMenu = NULL;
  61.  
  62. struct NewMenu CtrlMenuNewMenu[] =
  63.   {
  64.   NM_TITLE, (STRPTR)"HBBS"        ,  NULL , 0, NULL, (APTR)~0,
  65.   NM_ITEM , (STRPTR)"About"       , (STRPTR)"?", 0, 0L, (APTR)~0,
  66.   NM_ITEM , (STRPTR)"Screen Mode" , (STRPTR)"M", 0, 0L, (APTR)~0,
  67.   NM_ITEM , NM_BARLABEL           ,  0 , 0, 0L, (APTR)~0,
  68.   NM_ITEM , (STRPTR)"Quit!"       , (STRPTR)"Q", 0, 0L, (APTR)~0,
  69.   NM_END  , NULL                  ,  NULL , 0, 0L, (APTR)~0
  70.   };
  71.  
  72. ULONG CtrlMenuTags[] =
  73.   {
  74.   (GT_TagBase+67), TRUE,
  75.   (GTMN_TextAttr), (ULONG)&HBBS8066,
  76.   (TAG_DONE)
  77.   };
  78.  
  79. ULONG BevelTags[] =
  80.   {
  81.   (GTBB_Recessed), TRUE,
  82.   (GT_VisualInfo), 0,
  83.   (TAG_DONE)
  84.   };
  85.  
  86. struct Window *Ctrl = NULL;
  87. APTR CtrlVisualInfo;
  88. APTR CtrlDrawInfo;
  89. struct Gadget *CtrlGList;
  90. struct Gadget *CtrlGadgets[25];
  91. UBYTE CtrlFirstRun = 0;
  92.  
  93. STRPTR Ctrl_LV1_CycleLabels[] =
  94. {
  95.   (STRPTR)"Last Callers",
  96.   (STRPTR)"Last Downloads",
  97.   (STRPTR)"Last Uploads",
  98.   (STRPTR)"Last Pagers",
  99.   (STRPTR)"Last PWFails",
  100.   (STRPTR)"Last Carrier",
  101.   NULL
  102. };
  103.  
  104. ULONG CtrlGadgetTags[] =
  105.   {
  106.   (GTLV_Selected), 0,
  107.   (TAG_END),
  108.   (GTCY_Labels), (ULONG)&Ctrl_LV1_CycleLabels[0],
  109.   (TAG_END),
  110.   (GTLV_Selected), 0,
  111.   (TAG_END),
  112.   (GTLV_Selected), 0,
  113.   (TAG_END),
  114.   (GTLV_Selected), 0,
  115.   (TAG_END),
  116.   (GA_Disabled), TRUE,
  117.   (TAG_END),
  118.   (GA_Disabled), TRUE,
  119.   (TAG_END),
  120.   (GA_Disabled), TRUE,
  121.   (TAG_END),
  122.   (GA_Disabled), TRUE,
  123.   (TAG_END),
  124.   (GA_Disabled), TRUE,
  125.   (TAG_END),
  126.   (GA_Disabled), TRUE,
  127.   (TAG_END),
  128.   (GA_Disabled), TRUE,
  129.   (TAG_END),
  130.   (GA_Disabled), TRUE,
  131.   (TAG_END),
  132.   (GA_Disabled), TRUE,
  133.   (TAG_END),
  134.   (GA_Disabled), TRUE,
  135.   (TAG_END),
  136.   (GTTX_Text), (ULONG)"   -=( HydraBBS (C) 1996 - Deluxe Software Ltd! )=-",
  137.   (TAG_END),
  138.   };
  139.  
  140. UWORD CtrlGadgetTypes[] =
  141.   {
  142.   LISTVIEW_KIND,
  143.   CYCLE_KIND,
  144.   BUTTON_KIND,
  145.   LISTVIEW_KIND,
  146.   BUTTON_KIND,
  147.   BUTTON_KIND,
  148.   BUTTON_KIND,
  149.   BUTTON_KIND,
  150.   BUTTON_KIND,
  151.   BUTTON_KIND,
  152.   LISTVIEW_KIND,
  153.   BUTTON_KIND,
  154.   BUTTON_KIND,
  155.   LISTVIEW_KIND,
  156.   BUTTON_KIND,
  157.   BUTTON_KIND,
  158.   BUTTON_KIND,
  159.   BUTTON_KIND,
  160.   BUTTON_KIND,
  161.   BUTTON_KIND,
  162.   BUTTON_KIND,
  163.   BUTTON_KIND,
  164.   BUTTON_KIND,
  165.   BUTTON_KIND,
  166.   TEXT_KIND,
  167.   };
  168.  
  169. struct NewGadget CtrlNewGad[] =
  170.   {
  171.   93, 30, 144, 60, NULL, &HBBS8066, Ctrl_LV1, 1, NULL,  (APTR)&CtrlGadgetTags[0],
  172.   93, 14, 144, 15, NULL, &HBBS8066, Ctrl_LV1_Cycle, 1, NULL,  (APTR)&CtrlGadgetTags[3],
  173.   93, 1, 144, 12, (UBYTE *)"Information", &HBBS8066, Ctrl_LV1_Info, 16, NULL,  NULL,
  174.   1, 14, 90, 77, NULL, &HBBS8066, Ctrl_LV2_Nodes, 4, NULL,  (APTR)&CtrlGadgetTags[6],
  175.   205, 91, 67, 13, (UBYTE *)"Window", &HBBS8066, Ctrl_Window, 16, NULL,  NULL,
  176.   137, 91, 67, 13, (UBYTE *)"Watch", &HBBS8066, Ctrl_Screen, 16, NULL,  NULL,
  177.   69, 91, 67, 13, (UBYTE *)"Stop", &HBBS8066, Ctrl_Stop, 16, NULL,  NULL,
  178.   1, 91, 67, 13, (UBYTE *)"Start", &HBBS8066, Ctrl_Start, 16, NULL,  NULL,
  179.   346, 1, 105, 12, (UBYTE *)"Configure", &HBBS8066, Ctrl_Configure, 16, NULL,  NULL,
  180.   239, 1, 105, 12, (UBYTE *)"Shutdown All", &HBBS8066, Ctrl_Shutdown, 16, NULL,  NULL,
  181.   452, 1, 179, 132, NULL, &HBBS8066, Ctrl_LV3_Commands, 1, NULL,  (APTR)&CtrlGadgetTags[9],
  182.   273, 91, 67, 13, (UBYTE *)"Config", &HBBS8066, Ctrl_Config, 16, NULL,  NULL,
  183.   1, 1, 91, 12, (UBYTE *)"Status", &HBBS8066, Ctrl_Status, 16, NULL,  NULL,
  184.   239, 14, 212, 76, NULL, &HBBS8066, Ctrl_Who, 1, NULL,  (APTR)&CtrlGadgetTags[12],
  185.   273, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_5, 16, NULL,  (APTR)&CtrlGadgetTags[15],
  186.   205, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_4, 16, NULL,  (APTR)&CtrlGadgetTags[18],
  187.   137, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_3, 16, NULL,  (APTR)&CtrlGadgetTags[21],
  188.   69, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_2, 16, NULL,  (APTR)&CtrlGadgetTags[24],
  189.   1, 105, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_1, 16, NULL,  (APTR)&CtrlGadgetTags[27],
  190.   1, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_Gad19, 16, NULL,  (APTR)&CtrlGadgetTags[30],
  191.   69, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_7, 16, NULL,  (APTR)&CtrlGadgetTags[33],
  192.   137, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_8, 16, NULL,  (APTR)&CtrlGadgetTags[36],
  193.   205, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_9, 16, NULL,  (APTR)&CtrlGadgetTags[39],
  194.   273, 119, 67, 13, (UBYTE *)"<None>", &HBBS8066, Ctrl_10, 16, NULL,  (APTR)&CtrlGadgetTags[42],
  195.   69, 134, 560, 12, (UBYTE *)"Status:", &HBBS8066, Ctrl_StatusText, 1, NULL,  (APTR)&CtrlGadgetTags[45],
  196.   };
  197. UWORD CtrlZoomInfo[4] = { 0, 10, 196, 11 };
  198.  
  199. struct IntuiText CtrlCfgTexts[] =
  200.   {
  201.   2, 0, JAM2, 16, 3, &topa81281, (UBYTE *)"Screen Settings", &CtrlCfgTexts[1],
  202.   2, 0, JAM2, 16, 39, &topa81281, (UBYTE *)"Misc Settings", NULL
  203.   };
  204.  
  205. struct Window *CtrlCfg = NULL;
  206. APTR CtrlCfgVisualInfo;
  207. APTR CtrlCfgDrawInfo;
  208. struct Gadget *CtrlCfgGList;
  209. struct Gadget *CtrlCfgGadgets[3];
  210. UBYTE CtrlCfgFirstRun = 0;
  211.  
  212. UWORD CtrlCfgGadgetTypes[] =
  213.   {
  214.   BUTTON_KIND,
  215.   BUTTON_KIND,
  216.   BUTTON_KIND,
  217.   };
  218.  
  219. struct NewGadget CtrlCfgNewGad[] =
  220.   {
  221.   11, 13, 110, 13, (UBYTE *)"Pick Mode", &HBBS8066, CtrlCfg_ScreenMode, 16, NULL,  NULL,
  222.   124, 13, 110, 13, (UBYTE *)"Save", &HBBS8066, CtrlCfg_Save, 16, NULL,  NULL,
  223.   11, 50, 110, 13, (UBYTE *)"BBS Config", &HBBS8066, CtrlCfg_EditBBSConfig, 16, NULL,  NULL,
  224.   };
  225.  
  226. struct IntuiText LoadingTexts[] =
  227.   {
  228.   2, 0, JAM2, 12, 4, &topa81281, (UBYTE *)"HydraBBS V0.8", &LoadingTexts[1],
  229.   2, 3, JAM1, 118, 15, &topa81281, (UBYTE *)"(C) 1995 Dominic Clifton", &LoadingTexts[2],
  230.   2, 1, JAM1, 137, 25, &topa81281, (UBYTE *)"Deluxe Software Ltd", &LoadingTexts[3],
  231.   2, 3, JAM2, 139, 38, &topa81281, (UBYTE *)" ALPHA VERSION 05 ", &LoadingTexts[4],
  232.   2, 3, JAM1, 17, 58, &topa81281, (UBYTE *)"This program is SHAREWARE, if you", &LoadingTexts[5],
  233.   2, 3, JAM1, 17, 67, &topa81281, (UBYTE *)"use it alot then please register it!", &LoadingTexts[6],
  234.   2, 3, JAM1, 17, 77, &topa81281, (UBYTE *)"For details see 'HBBS.Guide'", &LoadingTexts[7],
  235.   2, 3, JAM1, 17, 86, &topa81281, (UBYTE *)"More hard work has gone into this", &LoadingTexts[8],
  236.   2, 3, JAM1, 17, 95, &topa81281, (UBYTE *)"program than you can imagine, and", &LoadingTexts[9],
  237.   2, 3, JAM1, 17, 105, &topa81281, (UBYTE *)"it's only fair that I should get", &LoadingTexts[10],
  238.   2, 3, JAM1, 17, 114, &topa81281, (UBYTE *)"something back for it!", &LoadingTexts[11],
  239.   2, 3, JAM1, 45, 133, &topa81281, (UBYTE *)"SHAREWARE SHAREWARE SHAREWARE", NULL
  240.   };
  241.  
  242. struct Window *Loading = NULL;
  243. APTR LoadingVisualInfo;
  244. APTR LoadingDrawInfo;
  245. UBYTE LoadingFirstRun = 0;
  246.  
  247. UWORD    CtrlScrndefpens = {65535};
  248.  
  249. UWORD   CtrlScrnColors[] =
  250.     {
  251.     0,10,10,10,
  252.     1,0,0,0,
  253.     65535,0,0,0
  254.     };
  255.  
  256. ULONG  CtrlScrnError=0;
  257.  
  258. ULONG   CtrlScrnTags[] =
  259.     {
  260.     (SA_Title),(ULONG)"HBBS Main Control Screen (C) 1995 Hydra of Tension!",
  261.     (SA_PubName),(ULONG)"CtrlScrn",
  262.     (SA_Depth)   ,2,
  263.     (SA_Left)    ,0,
  264.     (SA_Top)     ,0,
  265.     (SA_Width)   ,640,
  266.     (SA_Height)  ,256,
  267.     (SA_DisplayID),167936,
  268.     (SA_Overscan),1,
  269.     (SA_Font),(ULONG)&HBBS8066,
  270.     (SA_Behind),1,
  271.     (SA_Quiet),0,
  272.     (SA_ShowTitle),1,
  273.     (SA_AutoScroll),1,
  274.     (SA_FullPalette),1,
  275.     (SA_ErrorCode),(ULONG)(&CtrlScrnError),
  276.     (SA_Pens),(ULONG)&CtrlScrndefpens,
  277.     (SA_Colors),(ULONG)CtrlScrnColors,
  278.     (TAG_DONE)
  279.     };
  280.  
  281. struct Library *DiskfontBase = NULL;
  282. struct Library *GadToolsBase = NULL;
  283. struct GfxBase *GfxBase = NULL;
  284. struct IntuitionBase *IntuitionBase = NULL;
  285.  
  286. struct Image HbbsLogo_brush = { 0, 0, 80, 25, 3, NULL, 7, 0, NULL};
  287.  
  288. APTR WaitPointer = NULL;
  289. UWORD WaitPointerData[] =
  290.     {
  291.     0x0000,0x0000,0x0400,0x07c0,
  292.     0x0000,0x07c0,0x0100,0x0380,
  293.     0x0000,0x07e0,0x07c0,0x1ff8,
  294.     0x1ff0,0x3fec,0x3ff8,0x7fde,
  295.     0x3ff8,0x7fbe,0x7ffc,0xff7f,
  296.     0x7ffc,0xffff,0x7ffc,0xffff,
  297.     0x3ff8,0x7ffe,0x3ff8,0x7ffe,
  298.     0x1ff0,0x3ffc,0x07c0,0x1ff8,
  299.     0x0000,0x07e0,0x0000,0x0000
  300.     };
  301.  
  302. struct TextAttr HBBS8066 = { (STRPTR)"HBBS.font", 8, 0, 66 };
  303. struct TextAttr topa81281 = { (STRPTR)"topaz", 8, 128, 1 };
  304.  
  305. int MakeMenuCtrlMenu( APTR MenuVisualInfo )
  306. {
  307.   if (NULL == (CtrlMenu = CreateMenusA( CtrlMenuNewMenu, NULL)))
  308.     return( 1L );
  309.   LayoutMenusA( CtrlMenu, MenuVisualInfo, (struct TagItem *)(&CtrlMenuTags[0]));
  310.   return( 0L );
  311. }
  312.  
  313. void RendWindowCtrl( struct Window *Win, void *vi )
  314. {
  315. UWORD offx = Win->BorderLeft;
  316. UWORD offy = Win->BorderTop;
  317. if (Win != NULL)
  318.   {
  319.   DrawImage( Win->RPort, &HbbsLogo_brush, 357+offx, 99+offy);
  320.   BevelTags[3] = (ULONG)vi;
  321.   DrawBevelBoxA( Win->RPort, 1+offx,134+offy,630,12, (struct TagItem *)(&BevelTags[2]));
  322.   DrawBevelBoxA( Win->RPort, 341+offx,91+offy,110,41, (struct TagItem *)(&BevelTags[2]));
  323.   DrawBevelBoxA( Win->RPort,341+4+offx,91+2+offy,110-8,41-4, (struct TagItem *)(&BevelTags[0]));
  324.   }
  325. }
  326.  
  327. int OpenCtrlWindow( struct Screen *Scr)
  328. {
  329. UWORD offx, offy;
  330. UWORD loop;
  331. struct NewGadget newgad;
  332. struct Gadget *Gad;
  333. struct Gadget *Gad2;
  334. APTR Cla;
  335. if (CtrlFirstRun == 0)
  336.   {
  337.   CtrlFirstRun = 1;
  338.   }
  339. if (Ctrl == NULL)
  340.   {
  341.   offx = Scr->WBorLeft;
  342.   offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  343.   if (NULL != ( CtrlVisualInfo = GetVisualInfoA( Scr, NULL)))
  344.     {
  345.     if (NULL != ( CtrlDrawInfo = GetScreenDrawInfo( Scr)))
  346.       {
  347.       CtrlGList = NULL;
  348.       Gad = CreateContext( &CtrlGList);
  349.       for ( loop=0 ; loop<25 ; loop++ )
  350.         if (CtrlGadgetTypes[loop] != 198)
  351.           {
  352.           CopyMem((char * )&CtrlNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  353.           newgad.ng_VisualInfo = CtrlVisualInfo;
  354.           newgad.ng_LeftEdge += offx;
  355.           newgad.ng_TopEdge += offy;
  356.           CtrlGadgets[ loop ] = NULL;
  357.           CtrlGadgets[ newgad.ng_GadgetID - CtrlFirstID ] = Gad = CreateGadgetA( CtrlGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  358.           }
  359.       for ( loop=0 ; loop<25 ; loop++ )
  360.         if (CtrlGadgetTypes[loop] == 198)
  361.           {
  362.           CtrlGadgets[ loop ] = NULL;
  363.           Cla = NULL;
  364.           if (Gad)
  365.             CtrlGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlNewGad[ loop ].ng_GadgetText, CtrlNewGad[ loop ].ng_UserData );
  366.           }
  367.       if (Gad != NULL)
  368.         {
  369.         if (NULL != (Ctrl = OpenWindowTags( NULL, (WA_Left), 0,
  370.                 (WA_Top), 11,
  371.                 (WA_Width), 636+offx,
  372.                 (WA_Height), 149+offy,
  373.                 (WA_Title), "HBBS Control",
  374.                 (WA_ScreenTitle), "(C) Deluxe Software Ltd. Written By Dominic Clifton (Hydra/LSD)",
  375.                 (WA_MinWidth), 196,
  376.                 (WA_MinHeight), 11,
  377.                 (WA_MaxWidth), 640,
  378.                 (WA_MaxHeight), 160,
  379.                 (WA_DragBar), TRUE,
  380.                 (WA_DepthGadget), TRUE,
  381.                 (WA_CloseGadget), TRUE,
  382.                 (WA_Activate), TRUE,
  383.                 (WA_Dummy+0x30), TRUE,
  384.                 (WA_SmartRefresh), TRUE,
  385.                 (WA_AutoAdjust), TRUE,
  386.                 (WA_Gadgets), CtrlGList,
  387.                 (WA_Zoom), CtrlZoomInfo,
  388.                 (WA_PubScreen) , (LONG)Scr,
  389.                 (WA_IDCMP),6292348,
  390.                 (TAG_END))))
  391.           {
  392.           RendWindowCtrl(Ctrl, CtrlVisualInfo );
  393.           GT_RefreshWindow( Ctrl, NULL);
  394.           RefreshGList( CtrlGList, Ctrl, NULL, ~0);
  395.           if (CtrlMenu == NULL)
  396.             MakeMenuCtrlMenu( CtrlVisualInfo);
  397.           if (CtrlMenu != NULL)
  398.             {
  399.             SetMenuStrip( Ctrl, CtrlMenu);
  400.             return( 0L );
  401.             }
  402.           CloseWindow( Ctrl );
  403.           }
  404.         }
  405.       FreeGadgets( CtrlGList);
  406.       FreeScreenDrawInfo( Scr, CtrlDrawInfo );
  407.       }
  408.     FreeVisualInfo( CtrlVisualInfo );
  409.     }
  410.   }
  411. else
  412.   {
  413.   WindowToFront(Ctrl);
  414.   ActivateWindow(Ctrl);
  415.   return( 0L );
  416.   }
  417. return( 1L );
  418. }
  419.  
  420. void CloseCtrlWindow( void )
  421. {
  422. if (Ctrl != NULL)
  423.   {
  424.   ClearMenuStrip( Ctrl);
  425.   FreeMenus( CtrlMenu);
  426.   CtrlMenu = NULL;
  427.   FreeScreenDrawInfo( Ctrl->WScreen, CtrlDrawInfo );
  428.   CtrlDrawInfo = NULL;
  429.   CloseWindow( Ctrl);
  430.   Ctrl = NULL;
  431.   FreeVisualInfo( CtrlVisualInfo);
  432.   FreeGadgets( CtrlGList);
  433.   }
  434. }
  435.  
  436. void RendWindowCtrlCfg( struct Window *Win, void *vi )
  437. {
  438. int loop;
  439. UWORD offx = Win->BorderLeft;
  440. UWORD offy = Win->BorderTop;
  441. if (Win != NULL)
  442.   {
  443.   BevelTags[3] = (ULONG)vi;
  444.   DrawBevelBoxA( Win->RPort, 2+offx,5+offy,242,29, (struct TagItem *)(&BevelTags[0]));
  445.   DrawBevelBoxA( Win->RPort,2+4+offx,5+2+offy,242-8,29-4, (struct TagItem *)(&BevelTags[2]));
  446.   DrawBevelBoxA( Win->RPort, 2+offx,41+offy,241,29, (struct TagItem *)(&BevelTags[0]));
  447.   DrawBevelBoxA( Win->RPort,2+4+offx,41+2+offy,241-8,29-4, (struct TagItem *)(&BevelTags[2]));
  448.   for( loop=0; loop<2; loop++)
  449.     if (CtrlCfgTexts[loop].ITextFont==NULL)
  450.       CtrlCfgTexts[loop].ITextFont=Win->WScreen->Font;
  451.   PrintIText( Win->RPort, CtrlCfgTexts, offx, offy);
  452.   }
  453. }
  454.  
  455. int OpenCtrlCfgWindow( void )
  456. {
  457. struct Screen *Scr;
  458. UWORD offx, offy;
  459. UWORD loop;
  460. struct NewGadget newgad;
  461. struct Gadget *Gad;
  462. struct Gadget *Gad2;
  463. APTR Cla;
  464. if (CtrlCfgFirstRun == 0)
  465.   {
  466.   CtrlCfgFirstRun = 1;
  467.   }
  468. if (CtrlCfg == NULL)
  469.   {
  470.   Scr = LockPubScreen((UBYTE *)"CtrlScrn");
  471.   if (NULL != Scr)
  472.     {
  473.     offx = Scr->WBorLeft;
  474.     offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  475.     if (NULL != ( CtrlCfgVisualInfo = GetVisualInfoA( Scr, NULL)))
  476.       {
  477.       if (NULL != ( CtrlCfgDrawInfo = GetScreenDrawInfo( Scr)))
  478.         {
  479.         CtrlCfgGList = NULL;
  480.         Gad = CreateContext( &CtrlCfgGList);
  481.         for ( loop=0 ; loop<3 ; loop++ )
  482.           if (CtrlCfgGadgetTypes[loop] != 198)
  483.             {
  484.             CopyMem((char * )&CtrlCfgNewGad[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
  485.             newgad.ng_VisualInfo = CtrlCfgVisualInfo;
  486.             newgad.ng_LeftEdge += offx;
  487.             newgad.ng_TopEdge += offy;
  488.             CtrlCfgGadgets[ loop ] = NULL;
  489.             CtrlCfgGadgets[ newgad.ng_GadgetID - CtrlCfgFirstID ] = Gad = CreateGadgetA( CtrlCfgGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
  490.             }
  491.         for ( loop=0 ; loop<3 ; loop++ )
  492.           if (CtrlCfgGadgetTypes[loop] == 198)
  493.             {
  494.             CtrlCfgGadgets[ loop ] = NULL;
  495.             Cla = NULL;
  496.             if (Gad)
  497.               CtrlCfgGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, CtrlCfgNewGad[ loop ].ng_GadgetText, CtrlCfgNewGad[ loop ].ng_UserData );
  498.             }
  499.         if (Gad != NULL)
  500.           {
  501.           if (NULL != (CtrlCfg = OpenWindowTags( NULL, (WA_Left), 353,
  502.                   (WA_Top), 26,
  503.                   (WA_Width), 249+offx,
  504.                   (WA_Height), 74+offy,
  505.                   (WA_Title), "Configure",
  506.                   (WA_MinWidth), 150,
  507.                   (WA_MinHeight), 25,
  508.                   (WA_MaxWidth), 1200,
  509.                   (WA_MaxHeight), 1200,
  510.                   (WA_DragBar), TRUE,
  511.                   (WA_DepthGadget), TRUE,
  512.                   (WA_CloseGadget), TRUE,
  513.                   (WA_Activate), TRUE,
  514.                   (WA_SmartRefresh), TRUE,
  515.                   (WA_AutoAdjust), TRUE,
  516.                   (WA_Gadgets), CtrlCfgGList,
  517.                   (WA_PubScreen) , (LONG)Scr,
  518.                   (WA_IDCMP),580,
  519.                   (TAG_END))))
  520.             {
  521.             RendWindowCtrlCfg(CtrlCfg, CtrlCfgVisualInfo );
  522.             GT_RefreshWindow( CtrlCfg, NULL);
  523.             RefreshGList( CtrlCfgGList, CtrlCfg, NULL, ~0);
  524.             UnlockPubScreen( NULL, Scr);
  525.             return( 0L );
  526.             }
  527.           }
  528.         FreeGadgets( CtrlCfgGList);
  529.         FreeScreenDrawInfo( Scr, CtrlCfgDrawInfo );
  530.         }
  531.       FreeVisualInfo( CtrlCfgVisualInfo );
  532.       }
  533.     UnlockPubScreen( NULL, Scr);
  534.     }
  535.   }
  536. else
  537.   {
  538.   WindowToFront(CtrlCfg);
  539.   ActivateWindow(CtrlCfg);
  540.   return( 0L );
  541.   }
  542. return( 1L );
  543. }
  544.  
  545. void CloseCtrlCfgWindow( void )
  546. {
  547. if (CtrlCfg != NULL)
  548.   {
  549.   FreeScreenDrawInfo( CtrlCfg->WScreen, CtrlCfgDrawInfo );
  550.   CtrlCfgDrawInfo = NULL;
  551.   CloseWindow( CtrlCfg);
  552.   CtrlCfg = NULL;
  553.   FreeVisualInfo( CtrlCfgVisualInfo);
  554.   FreeGadgets( CtrlCfgGList);
  555.   }
  556. }
  557.  
  558. void RendWindowLoading( struct Window *Win, void *vi )
  559. {
  560. int loop;
  561. UWORD offx = Win->BorderLeft;
  562. UWORD offy = Win->BorderTop;
  563. if (Win != NULL)
  564.   {
  565.   DrawImage( Win->RPort, &HbbsLogo_brush, 22+offx, 15+offy);
  566.   BevelTags[3] = (ULONG)vi;
  567.   DrawBevelBoxA( Win->RPort, 12+offx,54+offy,299,73, (struct TagItem *)(&BevelTags[0]));
  568.   DrawBevelBoxA( Win->RPort, 2+offx,6+offy,319,143, (struct TagItem *)(&BevelTags[0]));
  569.   DrawBevelBoxA( Win->RPort,2+4+offx,6+2+offy,319-8,143-4, (struct TagItem *)(&BevelTags[2]));
  570.   DrawBevelBoxA( Win->RPort, 137+offx,37+offy,147,10, (struct TagItem *)(&BevelTags[0]));
  571.   DrawBevelBoxA( Win->RPort,137+4+offx,37+2+offy,147-8,10-4, (struct TagItem *)(&BevelTags[2]));
  572.   DrawBevelBoxA( Win->RPort, 12+offx,129+offy,299,15, (struct TagItem *)(&BevelTags[0]));
  573.   for( loop=0; loop<12; loop++)
  574.     if (LoadingTexts[loop].ITextFont==NULL)
  575.       LoadingTexts[loop].ITextFont=Win->WScreen->Font;
  576.   PrintIText( Win->RPort, LoadingTexts, offx, offy);
  577.   }
  578. }
  579.  
  580. int OpenLoadingWindow( void )
  581. {
  582. struct Screen *Scr;
  583. UWORD offx, offy;
  584. if (LoadingFirstRun == 0)
  585.   {
  586.   LoadingFirstRun = 1;
  587.   }
  588. if (Loading == NULL)
  589.   {
  590.   Scr = LockPubScreen(NULL);
  591.   if (NULL != Scr)
  592.     {
  593.     offx = Scr->WBorLeft;
  594.     offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
  595.     if (NULL != ( LoadingVisualInfo = GetVisualInfoA( Scr, NULL)))
  596.       {
  597.       if (NULL != ( LoadingDrawInfo = GetScreenDrawInfo( Scr)))
  598.         {
  599.         if (NULL != (Loading = OpenWindowTags( NULL, (WA_Left), 162,
  600.                 (WA_Top), 70,
  601.                 (WA_Width), 327+offx,
  602.                 (WA_Height), 154+offy,
  603.                 (WA_Title), "HBBS - Loading",
  604.                 (WA_MinWidth), 150,
  605.                 (WA_MinHeight), 25,
  606.                 (WA_MaxWidth), 1200,
  607.                 (WA_MaxHeight), 1200,
  608.                 (WA_DragBar), TRUE,
  609.                 (WA_DepthGadget), TRUE,
  610.                 (WA_Activate), TRUE,
  611.                 (WA_SmartRefresh), TRUE,
  612.                 (WA_IDCMP),580,
  613.                 (TAG_END))))
  614.           {
  615.           RendWindowLoading(Loading, LoadingVisualInfo );
  616.           UnlockPubScreen( NULL, Scr);
  617.           return( 0L );
  618.           }
  619.         FreeScreenDrawInfo( Scr, LoadingDrawInfo );
  620.         }
  621.       FreeVisualInfo( LoadingVisualInfo );
  622.       }
  623.     UnlockPubScreen( NULL, Scr);
  624.     }
  625.   }
  626. else
  627.   {
  628.   WindowToFront(Loading);
  629.   ActivateWindow(Loading);
  630.   return( 0L );
  631.   }
  632. return( 1L );
  633. }
  634.  
  635. void CloseLoadingWindow( void )
  636. {
  637. if (Loading != NULL)
  638.   {
  639.   FreeScreenDrawInfo( Loading->WScreen, LoadingDrawInfo );
  640.   LoadingDrawInfo = NULL;
  641.   CloseWindow( Loading);
  642.   Loading = NULL;
  643.   FreeVisualInfo( LoadingVisualInfo);
  644.   }
  645. }
  646.  
  647. struct Screen *OpenCtrlScrnScreen(void)
  648. {
  649. CtrlScrnError = 0;
  650. return OpenScreenTagList(NULL,(struct TagItem *)CtrlScrnTags);
  651. }
  652.  
  653. int OpenLibs( void )
  654. {
  655. if ( NULL != (DiskfontBase = OpenLibrary((UBYTE *)"diskfont.library" , 36)))
  656.   if ( NULL != (GadToolsBase = OpenLibrary((UBYTE *)"gadtools.library" , 37)))
  657.     if ( NULL != (GfxBase = (struct GfxBase * )OpenLibrary((UBYTE *)"graphics.library" , 37)))
  658.       if ( NULL != (IntuitionBase = (struct IntuitionBase * )OpenLibrary((UBYTE *)"intuition.library" , 37)))
  659.         return( 0L );
  660. CloseLibs();
  661. return( 1L );
  662. }
  663.  
  664. void CloseLibs( void )
  665. {
  666. if (NULL != DiskfontBase )
  667.   CloseLibrary( DiskfontBase );
  668. if (NULL != GadToolsBase )
  669.   CloseLibrary( GadToolsBase );
  670. if (NULL != GfxBase )
  671.   CloseLibrary( ( struct Library * )GfxBase );
  672. if (NULL != IntuitionBase )
  673.   CloseLibrary( ( struct Library * )IntuitionBase );
  674. }
  675.  
  676. int OpenDiskFonts( void )
  677. {
  678.   int OKSoFar = 0;
  679. if (NULL == OpenDiskFont( &HBBS8066 ) )
  680.   OKSoFar = 1;
  681. if (NULL == OpenDiskFont( &topa81281 ) )
  682.   OKSoFar = 1;
  683. return ( OKSoFar );
  684. }
  685.  
  686. int MakeImages( void )
  687. {
  688. UWORD failed = 0;
  689. if (NULL != (WaitPointer=AllocMem( 72, MEMF_CHIP)))
  690.   CopyMem( WaitPointerData, WaitPointer, 72);
  691. else
  692.   failed = 1;
  693. if (NULL != (HbbsLogo_brush.ImageData=AllocMem( 750, MEMF_CHIP)))
  694.   CopyMem( HbbsLogo_brushData, HbbsLogo_brush.ImageData, 750);
  695. else
  696.   failed = 1;
  697. if (failed==0)
  698.   return( 0L );
  699. else
  700.   {
  701.   FreeImages();
  702.   return( 1L );
  703.   }
  704. }
  705.  
  706. void FreeImages( void )
  707. {
  708. if (WaitPointer != NULL)
  709.   FreeMem( WaitPointer, 72);
  710. WaitPointer = NULL;
  711. if (HbbsLogo_brush.ImageData != NULL)
  712.   FreeMem(HbbsLogo_brush.ImageData, 750);
  713. HbbsLogo_brush.ImageData = NULL;
  714. }
  715.  
  716.